package com.warren.context.event;

import com.warren.context.ApplicationEvent;
import com.warren.context.ApplicationListener;

/**
 * @author warren
 * @create 2021-08-22 15:54
 * @Description 事件广播器
 */
public interface ApplicationEventMulticaster {
    /**
     * 添加一个监听器以接收所有事件的通知。
     * @param listener the listener to add
     */
    void addApplicationListener(ApplicationListener<?> listener);

    /**
     * 从通知列表中删除侦听器.
     * @param listener the listener to remove
     */
    void removeApplicationListener(ApplicationListener<?> listener);

    /**
     * 将给定的应用程序事件多播到适当的侦听器(广播).
     * 最终推送时间消息会经过这个接口方法来处理谁该接收事件
     * @param event the event to multicast
     */
    void multicastEvent(ApplicationEvent event);
}
